// 快速傅里叶变换 FFT 算法 多项式乘法
// 测试链接 ：https://www.luogu.com.cn/problem/P3803
// 相关帖子 ：https://www.cnblogs.com/dx123/p/17003464.html
// 相关帖子 ：https://en.oi-wiki.org/math/poly/fft/
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

#define complex complex<double>
const int MAXN = 4e6;
const double PI = acos(-1);
complex A[MAXN], B[MAXN];

// 递归版
void FFT(complex A[], int n, int op)
{
    if(n == 1) return;
    complex A1[n / 2], A2[n / 2];
    for(int i = 0; i < n / 2; ++i)
    {
        A1[i] = A[i * 2];
        A2[i] = A[i * 2 + 1];
    }
    FFT(A1, n / 2, op);
    FFT(A2, n / 2, op);
    complex w1({cos(2 * PI / n), op * sin(2 * PI / n)});
    complex wk({1, 0});
    for(int i = 0; i < n / 2; ++i)
    {
        A[i] = A1[i] + A2[i] * wk;
        A[i + n / 2] = A1[i] - A2[i] * wk;
        wk = wk * w1;
    }
}

int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 0; i <= n; ++i) scanf("%lf", &A[i]);
    for(int i = 0; i <= m; ++i) scanf("%lf", &B[i]);
    for(m = n + m, n = 1; n <= m; n <<= 1); // 求 n
    FFT(A, n, 1); FFT(B, n, 1); // 求出复平面上的点值
    for(int i = 0; i < n; ++i) A[i] = A[i] * B[i]; // 乘积
    FFT(A, n, -1); // 求系数
    for(int i = 0; i <= m; ++i) printf("%d ", (int)(A[i].real() / n + 0.5));

    return 0;
}